Closely-coupled processors or hardware resources will likely become widely available within the near future. Examples of such closely-coupled processors (or hardware resources) may include additional processors, threads in a particular processor, additional cores in a central processing unit, additional processors mounted on the same substrate or board, and/or such devices provided within computers connected by a network fabric into a cluster, a grid, or a collection of resources.
Certain computations (e.g., parallel processing or parallel programming) may benefit from the availability of such hardware resources. For example, a complex simulation may run faster if the simulation is divided into portions and the portions are simultaneously run on a number of processing devices in a parallel fashion. Parallel computing arrangements may include a controller that determines how an application should be divided and what application portions go to which parallel processors. For example, a host computer that is running a simulation may act as the controller for a number of parallel processors. Parallel processors may receive instructions and/or data from the controller and may return a result to the controller.
An array is a data structure consisting of a group of elements that are accessed by indexing. An array may include any number of dimensions containing numeric, character, logical values, cells, or structures. An array may be partitioned into segments to create a distributed array. However, current architectures do not utilize a single language presentation for parallel processing of distributed arrays. Rather, current architectures may process distributed arrays exclusively in parallel or exclusively in sequential manner.